package com.pactera.madp.cp.api.entity.prod;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 华融湘江产品系统同步产品信息表
 *
 * @author HuHao
 * @date 2022/3/18 9:31
 */
@Data
@ApiModel(value = "产品系统同步产品信息实体")
@TableName("cp_syn_prd_info")
public class SynProdInfoEntity implements Serializable {

    private static final long serialVersionUID = 1L;

//    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "产品代码")
    private String prdCode;

    @ApiModelProperty(value = "产品类别 0-基金产品 1-理财产品")
    private String prdType;

    @ApiModelProperty(value = "TA代码")
    private String taCode;

    @ApiModelProperty(value = "产品名称")
    private String prdName;

    @ApiModelProperty(value = "产品别名")
    private String prdName2;

    @ApiModelProperty(value = "产品面值")
    private Double faceValue;

    @ApiModelProperty(value = "产品面值")
    private Double issPrice;

    @ApiModelProperty(value = "募集起始日期")
    private Integer ipoStartDate;

    @ApiModelProperty(value = "募集结束日期")
    private Integer ipoEndDate;

    @ApiModelProperty(value = "产品成立日期")
    private Integer estabDate;

    @ApiModelProperty(value = "封闭到期日")
    private Integer aLimitEndDate;

    @ApiModelProperty(value = "产品结束日")
    private Integer endDate;

    @ApiModelProperty(value = "起息日")
    private Integer incomeDate;

    @ApiModelProperty(value = "收益截止日")
    private Integer incomeEndDate;

    @ApiModelProperty(value = "利息截止日")
    private Integer interestEndDate;

    @ApiModelProperty(value = "实际募集金额")
    private Double prdIssueRealBala;

    @ApiModelProperty(value = "允许的分红方式")
    private Double divModes;

    @ApiModelProperty(value = "默认的分红方式")
    private String divMode;

    @ApiModelProperty(value = "支持的渠道")
    private String channels;

    @ApiModelProperty(value = "支持客户组别")
    private String clientGroups;

    @ApiModelProperty(value = "份额类比 A-前收费 B-后收费")
    private String shareClass;

    @ApiModelProperty(value = "收益体现方式 0:净值类 1:货币式收益类 2:一般收益类")
    private String interestWay;

    @ApiModelProperty(value = "风险等级")
    private Integer riskLevel;

    @ApiModelProperty(value = "评估等级")
    private String grade;

    @ApiModelProperty(value = "产品状态 0-开放期 1-募集期 2-发行成功 3-发行失败 4-停止交易 5-停止申购 6-停止赎回 7-权益登记 8-红利发放 9-产品封闭 a-产品终止 b-预约认购期")
    private String status;

    @ApiModelProperty(value = "币种 156-人民币 840-美元 344-港元 954-欧元 392-日元 826-英镑 256-法郎 250-马克")
    private String currType;

    @ApiModelProperty(value = "钞汇标志 外币产品才有 0-现钞 1-现汇 2-均可")
    private String cashFlag;

    @ApiModelProperty(value = "开市时间")
    private Integer openTime;

    @ApiModelProperty(value = "闭市时间")
    private Integer closeTime;

    @ApiModelProperty(value = "个人最小购买单位 为0表示不控制")
    private Double pSubUnit;

    @ApiModelProperty(value = "个人首次投资最低金额 为0表示不控制")
    private Double pFirstAmt;

    @ApiModelProperty(value = "个人追加投资最低金额 为0表示不控制")
    private Double pAppAmt;

    @ApiModelProperty(value = "个人最低定投金额 为0表示不控制")
    private Double pMinInvestAmt;

    @ApiModelProperty(value = "个人最低持有份额 为0表示不控制")
    private Double pMinHold;

    @ApiModelProperty(value = "个人单笔最低赎回份额 为0表示不控制")
    private Double pMinRed;

    @ApiModelProperty(value = "个人单笔最高赎回份额 为0表示不控制")
    private Double pMaxRed;

    @ApiModelProperty(value = "个人赎回单位 为0表示不控制")
    private Double pRedUnit;

    @ApiModelProperty(value = "个人最低转换份额 为0表示不控制")
    private Double pMinConvVol;

    @ApiModelProperty(value = "个人最低定赎份额 为0表示不控制")
    private Double pMinRedVol;

    @ApiModelProperty(value = "个人单笔最大购买金额 为0表示不控制")
    private Double pMaxAmt;

    @ApiModelProperty(value = "个人单户累计最大购买金额 为0表示不控制")
    private Double pMaxAccuAmt;

    @ApiModelProperty(value = "机构最小购买单位 为0表示不控制")
    private Integer oSubUnit;

    @ApiModelProperty(value = "机构首次投资最低金额 为0表示不控制")
    private Double oFirstAmt;

    @ApiModelProperty(value = "机构追加投资最低金额 为0表示不控制")
    private Double oAppAmt;

    @ApiModelProperty(value = "机构最低定投金额 为0表示不控制")
    private Double oMinInvestAmt;

    @ApiModelProperty(value = "机构最低持有份额 为0表示不控制")
    private Double oMinHold;

    @ApiModelProperty(value = "机构单笔最低赎回份额 为0表示不控制")
    private Double oMinRed;

    @ApiModelProperty(value = "机构单笔最高赎回份额 为0表示不控制")
    private Double oMaxRed;

    @ApiModelProperty(value = "机构赎回单位 为0表示不控制")
    private Double oRedUnit;

    @ApiModelProperty(value = "机构最低转换份额 为0表示不控制")
    private Double oMinConvVol;

    @ApiModelProperty(value = "机构最低定赎份额 为0表示不控制")
    private Double oMinRedVol;

    @ApiModelProperty(value = "机构单笔最大购买金额 为0表示不控制")
    private Double oMaxAmt;

    @ApiModelProperty(value = "机构单户累计最大购买金额  为0表示不控制")
    private Double oMaxAccuAmt;

    @ApiModelProperty(value = "赎回资金到账天数 从赎回确认日开始计算，遇非工作日顺延")
    private Integer redDays;

    @ApiModelProperty(value = "分红资金到账天数 从分红确认日开始计算，遇非工作日顺延")
    private Integer divDays;

    @ApiModelProperty(value = "产品到期资金到账天数 从赎回确认日开始计算，遇非工作日顺延")
    private Integer refundDays;

    @ApiModelProperty(value = "发行失败/比例退款资金到账天数 从发行失败日或者产品成立日日开始计算，遇非工作日顺延")
    private Integer failDays;

    @ApiModelProperty(value = "申购失败资金到帐延迟天数 从申购确认日开始计算，遇非工作日顺延")
    private Integer openBuyDays;

    @ApiModelProperty(value = "所以业务延后清算天数 如T+1产品为1，T+0产品为0")
    private Integer tnConfirm;

    @ApiModelProperty(value = "交易方式 0-开放式 1-半封闭式 2-封闭式 3-半开放式")
    private String transWay;

    @ApiModelProperty(value = "适合度问卷编号")
    private Integer paperNo;

    @ApiModelProperty(value = "净值")
    private Double nav;

    @ApiModelProperty(value = "累计净值")
    private Double totNav;

    @ApiModelProperty(value = "净值日期")
    private Integer navDate;

    @ApiModelProperty(value = "预期收益率")
    private Double guestRate;

    @ApiModelProperty(value = "计息天数（只用于封闭式产品）")
    private Integer interestDays;

    @ApiModelProperty(value = "TA名称")
    private String taName;

    @ApiModelProperty(value = "产品转换允许标识")
    private String convFlag;

    @ApiModelProperty(value = "控制标识")
    private String controlFlag;

    @ApiModelProperty(value = "最低募集金额")
    private Double prdMinBala;

    @ApiModelProperty(value = "最高募集金额")
    private Double prdMaxBala;

    @ApiModelProperty(value = "产品属性")
    private String prdAttr;

    @ApiModelProperty(value = "产品模板信息")
    private String reserve1;

    @ApiModelProperty(value = "模板说明")
    private String modelComment;

    @ApiModelProperty(value = "当前模板")
    private Double currScale;

    @ApiModelProperty(value = "当前总份额")
    private Double prdTotvol;

    @ApiModelProperty(value = "管理人代码")
    private String prdManager;

    @ApiModelProperty(value = "申购允许提前天数")
    private Integer scheduleDays;

    @ApiModelProperty(value = "赎回允许提前天数")
    private Integer redemptionDays;

    @ApiModelProperty(value = "最近周期清算日")
    private Integer cycleDate;

    @ApiModelProperty(value = "募集方式")
    private String ipoType;

    @ApiModelProperty(value = "产品投资类型")
    private String prdInvestType;

    @ApiModelProperty(value = "产品登记编码")
    private String debtRegistCode;

    @ApiModelProperty(value = "是否处于预约购买周期")
    private String bookBuyFlag;

    @ApiModelProperty(value = "是否处于开放购买周期")
    private String openBuyFlag;

    @ApiModelProperty(value = "是否处于预约赎回周期")
    private String bookRedFlag;

    @ApiModelProperty(value = "是否处于开放赎回周期")
    private String openRedFlag;

    @ApiModelProperty(value = "下一购买开放日")
    private Integer nextOpenBuyDate;

    @ApiModelProperty(value = "下一赎回开放日")
    private Integer nextOpenRedDate;

    @ApiModelProperty(value = "日涨跌幅")
    private String dayRate;

    @ApiModelProperty(value = "年涨跌幅")
    private String yearRate;

    @ApiModelProperty(value = "产品标签")
    private String prdLable;

    @ApiModelProperty(value = "赎回说明")
    private String redDesc;

    @ApiModelProperty(value = "资管代销产品周期说明")
    private String openCycle;

    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;

    @ApiModelProperty(value = "删除标记")
    private String delFlag;

    @ApiModelProperty(value = "租户ID")
    private Integer tenant_id;

}
